home *** CD-ROM | disk | FTP | other *** search
- program MAX ;
- {This is a program to help small children learn about
- relative sizes of numbers. It uses screen control.
- It was written for TURBO pascal.
- Revision - 5/27/85 Mike Secord}
- {$I-}
- const
- num = 12 ; {Sets the maximum number of items in each box. 14 is prog max}
- var
- i, j, k, k1, l, n, ik: integer ;
- flag, ok: boolean ;
- done, lt: string[1] ;
- procedure drawbox(x1,y1,x2,y2: integer) ;
- var
- i: integer ;
- begin
- gotoxy(x1,y1) ;
- lowvideo ;
- for i := x1 to x2 do write(' ') ;
- gotoxy(x1,y1+1) ;
- for i := y1+1 to y2 do
- begin
- gotoxy(x1,i) ; write(' ') ;
- gotoxy(x2,i) ; write(' ') ;
- end ;
- gotoxy(x1,y2) ;
- for i := x1 to x2 do write(' ') ;
- end; {of procedure drawbox}
-
- procedure face (x1,y1: integer; happy: boolean) ;
- {x1 and y1 are the upper left hand corner of the box containing the face}
- var
- i : integer ;
- begin
- gotoxy(x1,y1) ; writeln(' ***** ') ;
- gotoxy(x1,y1+1) ; writeln(' * o o * ') ;
- gotoxy(x1,y1+2) ; writeln('* ^ *') ;
- gotoxy(x1,y1+3) ;
- if happy = true then writeln(' * |___| * ') ;
- if happy = false then writeln(' * .---. * ') ;
- gotoxy(x1,y1+4) ; writeln(' ***** ') ;
- end;{of face procedure}
-
- begin {main program}
- clrscr ;
- gotoxy(20,12) ;
- write('C O M P A R E T H E I T E M S G A M E ') ;
- delay(2000) ;
- repeat
- clrscr ;
- flag := true ;
- highvideo ;
- for j := 1 to 5 do
- begin
- randomize ;
- ik := random(num-4)+1 ;
- {DRAW LEFT HAND BOX AND ITEMS}
- drawbox(3, 4, 38, 12 ) ;
- highvideo ;
- gotoxy(20,4) ;
- write(' A ') ;
- gotoxy(4,7) ;
- write(' ') ;
- gotoxy(4,9) ;
- write(' ') ;
- randomize ;
- for i:= 1 to random(5)+ik do
- begin
- if i > 6 then
- begin
- gotoxy(3+5*(i-6),9) ;
- write('##') ;
- end ;
- if i< 7 then
- begin
- gotoxy(3+5*i, 7) ;
- write('##') ;
- end ;
- end ;
- {DRAW RIGHT HAND BOX AND ITEMS}
- drawbox(43, 4, 78, 12 ) ;
- highvideo ;
- gotoxy(60,4) ;
- write(' B ') ;
- gotoxy(44,7) ;
- write(' ') ;
- gotoxy(44,9) ;
- write(' ') ;
- randomize ;
- repeat
- k1 := random(5) +ik ;
- until not(k1 = i) ;
- for k:= 1 to k1 do
- begin
- if k > 6 then
- begin
- gotoxy(43+5*(k-6),9) ;
- write('##') ;
- end ;
- if k< 7 then
- begin
- gotoxy(43+5*k, 7) ;
- write('##') ;
- end ;
- end ;
- repeat
- gotoxy(25,15) ;
- write('WHICH BOX HAS THE MOST (A or B)? ',^H,^H,^H,^H,^H,^H);
- read(lt) ;
- ok := (ioresult = 0) ;
- if not ok then write(^G) ;
- until ok ;
- lt := chr(ord(lt) or 32) ; {make all upper case lower case for compare}
- if ((lt='a') and (i>k)) or ((lt='b') and (k>i) ) then flag:=true
- else flag := false ;
- lowvideo ;
- if j = 1 then face(1,19,flag)
- else face((j-1)*15, 19, flag) ;
- end;
- highvideo ;
- repeat
- writeln ;
- write('WOULD YOU LIKE TO PLAY AGAIN (Y or N) ? ') ;
- readln(done) ;
- ok := (ioresult = 0) ;
- if not ok then write(^G) ;
- until ok ;
- until (done = 'n') or (done = 'N') ;
- end.